
//LEXICAL TOKENS - every lexical token is open to extension
#define DIGITSYM			std::string("[0-9]")
#define LETTERSYM			std::string("[a-zA-Z]")
#define INTEGERSYM			DIGITSYM + "+"
#define NAMESYM				LETTERSYM + "[a-zA-Z0-9]*"
#define LPARENSYM			std::string("\\(")
#define RPARENSYM			std::string("\\)")
#define BEGINSYM			std::string("\\{")
#define ENDSYM				std::string("\\}")
#define SEMICOLONSYM		std::string(";")
#define EQUALSYM			std::string("=")
#define PLUSSYM				std::string("\\+")
#define MINUSSYM			std::string("\\-")
#define TIMESSYM			std::string("\\*")
#define PROCEDURESYM		std::string("procedure")
#define WHILESYM			std::string("while")
#define IFSYM				std::string("if")
#define THENSYM				std::string("then")
#define ELSESYM				std::string("else")
#define CALLSYM				std::string("call")

#define UNIVERSAL		"(" + INTEGERSYM + "|" + NAMESYM + "|" + LPARENSYM + "|" + RPARENSYM + "|" + BEGINSYM + "|" + ENDSYM + "|" + SEMICOLONSYM + "|" + EQUALSYM + "|" + PLUSSYM + "|" + MINUSSYM + "|" + TIMESSYM + "|" + PROCEDURESYM + "|" + CALLSYM + "|" + IFSYM + "|" + THENSYM + "|" + ELSESYM + "|" + WHILESYM + "|" + "[^\\s]" + ")"

